﻿#include <algorithm>
#include <iostream>
#include <list>

using namespace std;

void show(const int n)
{
    cout << n << " ";
}
// 打印链表
void print(list<int> &T)
{
    // 使用for_each函数
    // for_each(T.begin(), T.end(), show);
    // cout << endl;
    // 使用迭代器进行遍历
    for (auto it = T.begin(); it != T.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;
}

int main() {
    list<int> one(5, 2);	// 赋初值，5个2
    print(one);

    one.push_back(19);	// 尾部追加
    one.push_front(20);	// 头部追加
    print(one);

    int a[5] = {1, 2, 3, 4, 5};
    one.insert(one.begin(), a, a + 3);	// 在begin()位置插入3个元素
    print(one);

    one.remove(2);	// 删除指定元素值
    print(one);

    list<int> two(3, 1);	// 另一个链表，3个1
    one.splice(one.begin(), two);   // 插入到pos的前面
    print(one);
    print(two); // 为空
    // 排序
    one.sort();
    print(one);

    two.assign(3, 1);
    two.sort();
    // 合并
    one.merge(two);
    print(one);
    // 去重（先要排序，再去重）
    one.unique();
    print(one);
}